package com.ly.lw.styledo;

import android.app.Application;

import com.lidroid.xutils.DbUtils;
import com.lidroid.xutils.bitmap.BitmapGlobalConfig;
import com.lidroid.xutils.cache.MD5FileNameGenerator;
import com.ly.lw.styledo.utils.FileUtils;
import com.nostra13.universalimageloader.cache.disc.impl.UnlimitedDiscCache;
import com.nostra13.universalimageloader.cache.disc.naming.Md5FileNameGenerator;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
import com.nostra13.universalimageloader.core.download.BaseImageDownloader;
import com.nostra13.universalimageloader.utils.StorageUtils;

import java.io.File;


/**
 * 描   述：
 * 创 建 人：ly
 * 版 本 号：v1.0
 */
public class BaseApp extends Application {

    private static BaseApp app;
    private DbUtils dbUtils;

    @Override
    public void onCreate() {
        super.onCreate();
        app = this;
       // configGlobalBitmap();
        initImageLoaderConfiguration();
    }

    public static BaseApp getInstance() {
        return app;
    }

    /**
     * 图片加载框架全局配置
     */
    private void configGlobalBitmap() {

        BitmapGlobalConfig config = BitmapGlobalConfig.getInstance(this, FileUtils.getImageCache());
        config.setDefaultCacheExpiry(1000L * 60 * 60 * 24 * 30 * 12 * 100);

         config.setDiskCacheEnabled(true);
        //设置内存的大小 默认 4m 最小2m
        config.setMemoryCacheSize(8 * 1024 * 1024);
        config.setDiskCacheSize(1024 * 1024 * 100);
        //设置线程池的线程数量  默认 5
        config.setThreadPoolSize(4);
        //保存图片的名字以md5命名
        config.setFileNameGenerator(new MD5FileNameGenerator());
    }


    private void initImageLoaderConfiguration() {
        //全局，构建器，this上下文
        ImageLoaderConfiguration.Builder builder = new ImageLoaderConfiguration.Builder(this);
        // 设置缓存路径
        File imageCache = StorageUtils.getOwnCacheDirectory(this, "fruit/imageCache");
        builder.diskCache(new UnlimitedDiscCache(imageCache));
        // ImageLoaderConfiguration.Builder builder = new
        // ImageLoaderConfiguration.Builder(this);
        //存储的最大宽度，长度���󳤿�
        builder.memoryCacheExtraOptions(480, 800);// max width, max height，即保存的每个缓存文件的最大长宽
        //最大线程池数：线程池内加载的数量 范围3-5之间
        builder.threadPoolSize(5);//框架：内存缓存，sdCard文件，线程池
        //线程的优先级别
        // builder.threadPriority(Thread.NORM_PRIORITY - 2)
        /**
         * ImageLoaderConfiguration
         * 配置中的.discCacheFileNameGenerator()方法是将缓存下来的文件以什么方式命名 里面可以调用的方法有 1.new
         * Md5FileNameGenerator() //使用MD5对UIL进行加密命名 2.new
         * HashCodeFileNameGenerator()//使用HASHCODE对UIL进行加密命名
         */
        builder.diskCacheFileNameGenerator(new Md5FileNameGenerator());//加密
        //最大放100个，放101的时候，把第一个踢出去：配置缓存图片的数量 保存在磁盘里的图片最大数量�
        builder.diskCacheFileCount(100);

        //设置默认连接超时时间5s,默认读取超时时间20s
        builder.imageDownloader(new BaseImageDownloader(this, 5 * 1000, 20 * 1000));
        /**
         * 注册框架全局配置���
         */
        ImageLoader.getInstance().init(builder.build());
    }

//    public DbUtils getDbUtils() {
//        if (dbUtils == null) {
//            DbUtils.DaoConfig config = new DbUtils.DaoConfig(this);
//            config.setDbDir(FileUtils.getDbPath());
//            config.setDbVersion(AppConfig.VERSION);
//            config.setDbName(AppConfig.DB_NAME);
//            //        config.setDbUpgradeListener(new DbUtils.DbUpgradeListener() {
////            @Override
////            public void onUpgrade(DbUtils dbUtils, int i, int i1) {
////
////            }
////        });
//            dbUtils = DbUtils.create(config);
//        }
//
//
//
//        return dbUtils;
//    }

    

}
